/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package suaps.bdd;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.LinkedList;
import java.util.List;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

import suaps.bean.*;

public class ListePersonneDAO {

	private final static String NOM_RESOURCE_JDBC = "java:comp/env/jdbc/dsMonApplication";
	
	/**
	 * Retourne la liste des courses stockées dans la base.
	 * @return La liste des courses/erreurs.
	 */
	public RetourRechercherBean rechercherPersonnes() {
		final RetourRechercherBean lRetourRechercher = new RetourRechercherBean();
		
		try {
			final Context lContext = new InitialContext();
			final DataSource lDataSource = (DataSource) lContext.lookup(NOM_RESOURCE_JDBC);

			final List<PersonneBean> lListePersonnes = new LinkedList<PersonneBean>();
			
			final Connection lConnection  = lDataSource.getConnection();
			final Statement lStatement = lConnection.createStatement();
			final ResultSet lResultSet = lStatement.executeQuery("SELECT * FROM PERSONNE");
			
			while (lResultSet.next()) {
				final PersonneBean lPersonne = new PersonneBean();
				
				final int lIdPersonne = lResultSet.getInt("IDPERSONNE");
				final String lNom = lResultSet.getString("NOM");
				final String lPrenom = lResultSet.getString("PRENOM");
				final String lAdresse = lResultSet.getString("ADRESSE");
				final String lVille = lResultSet.getString("VILLE");
				final String lCodePostal = lResultSet.getString("CODEPOSTAL");
				final String lTelephone = lResultSet.getString("TELEPHONE");
				final String lMail = lResultSet.getString("MAIL");
				final int lAnneeDeNaissance = lResultSet.getInt("ANNEEDENAISSANCE");
				final String lSexe = lResultSet.getString("SEXE");
				
				lPersonne.setIdPersonne(lIdPersonne);
				lPersonne.setNom(lNom);
				lPersonne.setPrenom(lPrenom);
				lPersonne.setAdresse(lAdresse);
				lPersonne.setVille(lVille);
				lPersonne.setCodePostal(lCodePostal);
				lPersonne.setTelephone(lTelephone);
				lPersonne.setMail(lMail);
				lPersonne.setAnneeDeNaissance(lAnneeDeNaissance);
				lPersonne.setSexe(lSexe);
				
				lListePersonnes.add(lPersonne);
			}
			
			lRetourRechercher.setListePersonnes(lListePersonnes);
		} catch (NamingException e) {
			// Trace l'erreur dans la log du serveur
			e.printStackTrace();
			// Stocke l'erreur dans le retour
			lRetourRechercher.setErreur("NamingException : " + e.getMessage());
		} catch (SQLException e) {
			// Trace l'erreur dans la log du serveur
			e.printStackTrace();
			// Stocke l'erreur dans le retour
			lRetourRechercher.setErreur("SQLException : " + e.getMessage());
		}
		
		return lRetourRechercher;
	}
}
